from selenium import webdriver
import re
import time




"""
 作者：张俊杰
 时间：2020年10月19日
 描述：
 替换tab为空格
    选中一个tab符号，按快捷键Ctrl+C复制。
    再按快捷键Ctrl+H，进入替换界面。 快速替换格式
    
    安装pyinstaller新版 pip install robotframework-AutoItLibrary
 打包为exe的 打包命令 pyinstaller -F -i icon.ico  FoxLLQ.py  
   格式为：在txt文本文档中纵向排列，前面为账号，后面为密码，中间用一个空格分割
    2019010562 13302X
    2019011654 013020
    2019013865 212328
"""


# 保存的地址
SAVEADDRESS = './context.txt'
# 数据来源
READ_FILE_PATH = "1.txt"
#线程等待 x 秒
SLEEP_SECOND = 10
#登录的URL
URL = "https://m.xyzy.boruitec.com/Self/login/"




# 实例化火狐浏览器
driver = None

## 火狐浏览器控制表单提交等操作
def fireFoxController(url,username,password):
    # 设置大小和在桌面的位置
    driver.set_window_position(30, 40)
    driver.set_window_size(790, 730) #不能太小，不加载页面需要点击的内容就会报错
    # 打开网站
    driver.get(url)
    # 清理Cookie （该网站通过cookie会话来判断是否需要输入验证码）
    driver.delete_cookie(u"JSESSIONID")
    # 刷新页面重新获取新的JSESSIONID
    driver.refresh()
    # 清空username
    driver.find_element_by_id('account').clear()
    # 输入username
    driver.find_element_by_id('account').send_keys(username)
    # 清空password
    driver.find_element_by_id('password').clear()
    # 输入password
    driver.find_element_by_id('password').send_keys(password)
    # 判断是否需要验证码
    # isDis = driver.find_element_by_id('randomDiv').is_displayed()


    # 提交表单
    driver.find_element_by_name('submit').click()
    # 获取当前url
    htmlUrl = driver.current_url
    # print("测试"+htmlUrl)
    # 如果url进入状态页
    if htmlUrl == 'https://m.xyzy.boruitec.com/Self/dashboard':
        #读取账户流量
        # yuliang = driver.find_element_by_xpath("//div[@class='user-info1']/*[2]/dl/dt").text
        yuliang = driver.find_element_by_class_name('user-info1').find_element_by_xpath('.//div[2]//dl//dt').text
        # 保存到文本中
        saveAddUser(yuliang,username,password)
        # 退出
        driver.find_element_by_xpath("//div[@class='caption']//p[4]//a").click()
    # 线程睡眠SLEEP_SECOND s
    time.sleep(SLEEP_SECOND)

## 读取文件内容 按照空格分割并转换为数组
def readText():
    try:
        result = []
        with open(READ_FILE_PATH, "r") as f:
            for line in f.readlines():
                data = line.split('\n\t')
                for str in data:
                    sub_str = str.split(' ')
                if sub_str:
                    result.append(sub_str)
        # print(result)
    except:
        print("输入的文件不存在！")
        driver.quit()
    return result

## 保存
def saveAddUser(yuliang, username, password):
    yuliang = yuliang.split(" ")
    print("账号："+username+" 密码："+password+" 剩余流量："+yuliang[0])
    with open(SAVEADDRESS,"a") as fileWriter:
        fileWriter.write(username+" "+password+" "+ yuliang[0] +"MB")
        fileWriter.write("\n")


## 提取我需要的内容
def textInputs():
    result = readText()
    #print(result) #输出读取出来的所有的文档内容
    for str in result:
        #print(str[0].strip("\n"),str[1].strip("\n"))#输出账号 密码
        fireFoxController(URL,str[0].strip("\n"),str[1].strip("\n"))




def main():
     try:
        ## 导入全局变量
        global driver
        global READ_FILE_PATH
        global SLEEP_SECOND
        PASSWORD = input("请输入启动密码")
        if PASSWORD == "kkdaj":
            print("启动成功！请勿用作违法！")
            READ_FILE_PATH = input("请输入导入的数据地址：")
            SLEEP_SECOND = int(input("请设置等待间隔（推荐为10，最小为2）:"))
            if READ_FILE_PATH.strip("\n\t") == "" or SLEEP_SECOND=="" or SLEEP_SECOND < 2:
                print("输入的参数有误,程序退出！！！")
            else:
                driver = webdriver.Firefox()
                textInputs()
     except:
         print("程序错误或输入有误，退出！")

if __name__=='__main__':
    ##调用开始
   main()

